定期ミートアップ 第41回
BiwaScheme R7RSライブラリシステム
https://github.com/biwascheme/biwascheme/pull/306
r7expander
各識別子にプレフィックスを付けて衝突しないようにする
ライブラリシステム未対応の処理系で動くコードになる
例
code:scm
; counter.scm
(define-library (counter)
(import (scheme base))
(export get-count inc-count)
(begin
(define ct 0)
(define (get-count) ct)
(define (inc-count) (set! ct (+ ct 1)))))
; main.scm
(import (scheme base) (counter))
(inc-count)
(get-count)
code:scm
(define counter:ct 0)
(define (counter:get-count) counter:ct))
(define (counter:inc-count) (set! counter:ct (+ counter:ct 1)))
(counter:inc-count)
(counter:get-count)
Shiika ランタイム
今はカレントディレクトリからbuiltin/builtin.bcを探している
別ディレクトリの.skを動かしたいときに困る
runner.rsからの相対パスで探す?
cargo installでインストールしたときに困る
cargo install shiika → ~/.cargo/bin/shiika
Shiika Randomクラス
https://github.com/shiika-lang/shiika/compare/main...random#diff-3f09fb63fb73aab01cb8037cc8a4763d526641a1d1411d64eee8eddc9391a32e
とりあえず整数と小数くらいが出せれば
シード値は指定したい
デフォルトでは指定したくない
securerandomとは?